Remote desktop sharing allows a user to access applications and data on a remote computer over a network. For example, Microsoft® Remote Desktop is a model where one computer “takes control” of a second computer by viewing its desktop session and acting as master for keyboard and mouse input.
For security reasons, most users who access an external network like the Internet do so from behind one or more firewalls. A firewall is a device or set of devices configured to permit or deny access of computer applications to the firewall-protected computer based upon a set of rules and other criteria. A firewall can be implemented in either hardware or software, or in a combination of hardware and software. Firewalls are frequently used, for example, to prevent unauthorized Internet users from tunneling in to private computers and computer networks connected to the Internet. All messages entering the firewall-protected computer pass through the firewall, which examines each message and blocks those that do not meet the specified security criteria.
In order to bypass the firewall to enable remote desktop sharing, currently a user has to take a deliberate action to open a channel through a well known protocol like hypertext transfer protocol (HTTP) to a central location. The centralized location needs specialized software or hardware or a combination thereof in order to act as an intermediary for requests from the user. That is, the centralized location has to be a proxy server. The user connects to the proxy server, and requests a service, such as remote desktop sharing, from a different computer. The proxy server evaluates the request according to its filtering rules (e.g., by IP (Internet protocol) address or protocol). If the request is validated by the filter, the proxy server provides the service by connecting to the relevant computer and requesting the service on behalf of the user. A proxy server that passes requests and replies unmodified is usually called a gateway or a tunneling proxy.